package cn.edu.cuit.filter;
import java.io.*;
import javax.servlet.*;
/**
 * @author fhzheng
 * <h1> 转发过滤器 </h1>
 * <li> 这是一个转发过滤器，只过滤，不完成转发动作
 * 	<li>初学者一定要注意和小心：
 * 	<li>如果要到过转发控制器，则一定要让过滤器只起到过滤的作用
 * 	<li>过滤器如果给了响应，业务上看不到，只能过滤响应
 * 	<li>将过滤器的放行注释掉，就可以看到过滤器给的响应了，因为这样就到达不了控制器了
 * 	<li>再将过滤器的放行，就看不到过滤器给的响应了，而是控制器的响应，会转发到first.jsp页
 * 
 */
public class ForwardFilter implements Filter {
	public void init(FilterConfig fConfig) throws ServletException {
		// 过滤器对象在初始化时调用，可以配置一些初始化参数
    }
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		System.out.println("这里是转发过滤器");

		// 用于拦截用户的请求，如果和当前过滤器的拦截路径匹配，该方法会被调用
		PrintWriter out=response.getWriter();
		// 只做一个标记输出，如果有这个输出，则控制器就不会有输出了
		out.write("转发过滤器：Hello FilterTest");
		out.write("<br>看到这个信息，说明已经到达不了转发控制器了，因为过滤器已经处理了请求了，给了响应");
		
		// 过滤器动作完成，放行，则到达控制器
		chain.doFilter(request, response);
		
	}
	public void destroy() {
		// 过滤器对象在销毁时自动调用，释放资源
	}
}